// ElectronStoreWrapper.ts
import Store from "electron-store";

class ElectronStoreWrapper {
  private static instance: ElectronStoreWrapper | null = null;
  private store: Store;

  // 私有构造函数，防止外部直接实例化
  private constructor() {
    // 使用内置的默认值创建 Store 实例
    this.store = new Store({
      defaults: {
        username: "guest",
        theme: "dark",
        // 可以在这里添加更多默认设置
      },
    });
  }

  // 公共静态方法，用于获取类的唯一实例
  public static getInstance(): ElectronStoreWrapper {
    if (!ElectronStoreWrapper.instance) {
      ElectronStoreWrapper.instance = new ElectronStoreWrapper();
    }
    return ElectronStoreWrapper.instance;
  }

  // 通用方法：获取某个 key 的值
  public get<T>(key: string): T | undefined {
    return this.store.get(key) as T;
  }

  // 通用方法：设置某个 key 的值
  public set<T>(key: string, value: T): void {
    this.store.set(key, value);
  }

  // 通用方法：检查某个 key 是否存在
  public has(key: string): boolean {
    return this.store.has(key);
  }

  // 通用方法：删除某个 key
  public delete(key: string): void {
    this.store.delete(key);
  }

  // 通用方法：获取所有存储的数据
  public getAll(): Record<string, any> {
    return this.store.store; // 注意：这里直接返回了内部的 store 对象，可能需要根据实际情况调整
  }

  // 通用方法：清除所有存储的数据（慎用）
  public clear(): void {
    this.store.clear();
  }
}

// 导出单例实例
const eStore = ElectronStoreWrapper.getInstance();
export default eStore;
